package com.bjsxt.feign;

import com.bjsxt.config.feign.OAuth2FeignConfig;
import com.bjsxt.dto.UserDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

/**
 * description:
 * OpenFeign 远程调用 member-service 的 http 接口
 *
 * @author ALIENWARE
 * @version v1.0.0
 * @create 12/29/2023
 **/
@FeignClient(name = "member-server", contextId = "userFeignClient", configuration = OAuth2FeignConfig.class, path = "/users")
public interface UserFeignClient {

    /**
     * 根据用户的 id 集合查询用户基本数据
     *
     * @param ids 用户 id 集合
     * @return 查询出的用户基本数据
     */
    @GetMapping("/basic/users")
    List<UserDto> getBasicUsers(@RequestParam("ids") List<Long> ids);

    /**
     * 根据用户 id 集合或者用户名或者手机号进行查询用户数据
     *
     * @param ids      用户 id 集合
     * @param userName 用户名
     * @param mobile   手机号码
     * @return key: 用户数据的 id，value: 查询出的用户基本数据
     */
    @GetMapping("/basic/usersMap")
    Map<Long, UserDto> getBasicUsersMap(@RequestParam(value = "ids", required = false) List<Long> ids, @RequestParam(value = "userName", required = false) String userName, @RequestParam(value = "mobile", required = false) String mobile);
}
